#ifndef __OGROUP_H__
#define __OGROUP_H__

class oDLL b2Filter;

class oDLL oGroup: public b2Filter
{
private:
	static oGroup _zero;
	static oGroup _one;
	static oGroup _two;
	static oGroup _three;
	static oGroup _four;
	static oGroup _five;
	static oGroup _six;
	static oGroup _seven;
	static oGroup _eight;
	static oGroup _nine;
	static oGroup _ten;
	static oGroup _eleven;
	static oGroup _twelve;
	static oGroup _thirteen;
	static oGroup _fourteen;
	static oGroup _fifteen;
	static oGroup* groups[16]; 
public:
	static oGroup* zero;
	static oGroup* one;
	static oGroup* two;
	static oGroup* three;
	static oGroup* four;
	static oGroup* five;
	static oGroup* six;
	static oGroup* seven;
	static oGroup* eight;
	static oGroup* nine;
	static oGroup* ten;
	static oGroup* eleven;
	static oGroup* twelve;
	static oGroup* thirteen;
	static oGroup* fourteen;
	static oGroup* fifteen;
	void setUserData(void* data);
	void* getUserData();
	static oGroup* get(uint16 index);
	static void setShouldContact(oGroup* groupA, oGroup* groupB, bool contact);
	static void setShouldContact(uint16 indexA, uint16 indexB, bool contact);
	static bool getShouldContact(oGroup* groupA, oGroup* groupB);
	static bool getShouldContact(uint16 indexA, uint16 indexB);
	static const string EVENT_REFILTER;
private:
	oGroup(uint16 index);
	void* _userData;
};

#endif